package com.syxp.pda.service.plan;

import java.util.Date;
import java.util.List;

import com.syxp.pda.core.service.BaseService;
import com.syxp.pda.entity.base.CHKLine;
import com.syxp.pda.entity.base.CHKPlan;
import com.syxp.pda.entity.base.DefineIDZone;

/**
 * 巡检计划管理
 * @version 1.0
 * @author Light
 *
 */
public interface CHKPlanService extends BaseService<CHKPlan> {

	/*********计划制定**********************************************/
	/**
	 * 获取所有巡检计划
	 * @return 巡检计划列表
	 */
	public List getPlans();
	
	/**
	 * 获取未导入的路线
	 * @return
	 */
	public List getUnimportLines();
	
	/**
	 * 导入巡检路线到巡检计划中
	 * @param planId 巡检计划ID
	 * @param lineIdList 巡检路线ID列表
	 */
	public void importLines(int planId, List lineIdList);
	
	/**
	 * 从巡检计划中删除巡检路线
	 * @param planId 巡检计划ID
	 * @param lineId 巡检路线ID
	 */
	public void removeLine(int planId, int lineId);
	
	/**
	 * 根据计划ID获取线路
	 * @param planId 计划ID
	 * @return
	 */
	public List<CHKLine> getLines(int planId);

	/**
	 * 设置巡检线路的值班人员
	 * @param lineId 巡检线路ID
	 * @param userList 值班人员列表
	 */
	public void setLineUsers(int lineId, List userList);
	
	/**
	 * 获取未导入的区域
	 * @return
	 */
	public List getUnimportZones();
	
	/**
	 * 导入区域到巡检路线中
	 * @param lineId 巡检路线ID
	 * @param zoneIdList 区域ID列表
	 */
	public void importZone(int lineId, List zoneIdList);
	
	/**
	 * 从巡检路线中删除区域
	 * @param lineId 巡检路线ID
	 * @param zoneId 巡检区域ID
	 */
	public void removeZone(int lineId, int zoneId);
	
	/**
	 * 根据路线ID获取区域
	 * @param lineId 路线ID
	 * @return
	 */
	public List<DefineIDZone> getZones(int lineId);
	
	/**
	 * 根据计划ID、路线ID、区域ID和值班日期查询
	 * @param planId 计划ID
	 * @param lineId 路线ID
	 * @param zoneId 区域ID
	 * @param dutyDate 值班日期
	 * @return 详细巡检计划列表
	 */
	public List getPlanDetail(int planId, int lineId, int zoneId, Date dutyDate);
	
	
	/*********计划下载**********************************************/
	/**
	 * 根据开始、结束值班日期和值次ID查询巡检计划
	 * @param beginDutyDate 开始值班日期
	 * @param endDutyDate 结束值班日期
	 * @param dutyId 值次ID
	 * @param username 人员账号
	 * @param operatorcode 工号
	 * @return 巡检计划列表
	 */
	public List download(Date beginDutyDate, Date endDutyDate, int dutyId, String username, String operatorcode);
	
	
	/*********计划查询**********************************************/
	/**
	 * 根据值班日期、线路ID、值次ID、班次ID查询巡检计划
	 * @param dutyDate 值班日期
	 * @param lineId 线路ID
	 * @param dutyId 值次ID
	 * @param classId 班次ID
	 * @return 巡检计划列表
	 */
	public List queryPlan(Date dutyDate, int lineId, int dutyId, int classId);
	
}
